// pages/pay/recharge-records/index.js
const apiService = require('../../../utils/api.js');
const auth = require('../../../utils/auth.js');

Page({

	/**
	 * 页面的初始数据
	 */
	data: {
		statusBarHeight: 44, // 系统状态栏高度
		rechargeRecords: [], // 充值记录列表
		loading: false, // 加载状态
		hasMore: true, // 是否还有更多数据
		page: 1, // 当前页码
		size: 20, // 每页数量
		emptyText: '暂无充值记录' // 空状态文本
	},

	/**
	 * 生命周期函数--监听页面加载
	 */
	onLoad(options) {
		this.getSystemInfo();
		this.loadRechargeRecords(true);
	},

	/**
	 * 获取系统信息
	 */
	getSystemInfo() {
		const systemInfo = wx.getSystemInfoSync();
		this.setData({
			statusBarHeight: systemInfo.statusBarHeight
		});
	},

	/**
	 * 加载充值记录
	 * @param {boolean} refresh 是否刷新数据
	 */
	async loadRechargeRecords(refresh = false) {
		if (this.data.loading) return;

		try {
			// 检查登录状态
			if (!auth.checkLoginStatus()) {
				wx.showToast({
					title: '请先登录',
					icon: 'none'
				});
				return;
			}

			this.setData({ loading: true });

			const page = refresh ? 1 : this.data.page;
			const result = await apiService.getUserRechargeRecords(page, this.data.size);

			// api.js返回格式：{success: boolean, data: object, message: string}
			if (result.success) {
				const newRecords = result.data.list || [];
				const records = refresh ? newRecords : [...this.data.rechargeRecords, ...newRecords];

				this.setData({
					rechargeRecords: records,
					page: page + 1,
					hasMore: newRecords.length >= this.data.size,
					loading: false
				});
			} else {
				throw new Error(result.message || '获取充值记录失败');
			}

		} catch (error) {
			console.error('加载充值记录失败:', error);
			this.setData({ loading: false });
			wx.showToast({
				title: error.message || '加载失败',
				icon: 'none'
			});
		}
	},

	/**
	 * 返回上一页
	 */
	onBack() {
		wx.navigateBack({
			delta: 1,
			fail: () => {
				wx.switchTab({
					url: '/pages/user/index'
				});
			}
		});
	},

	/**
	 * 格式化时间显示
	 * @param {number} timestamp 时间戳
	 * @returns {string} 格式化后的时间
	 */
	formatTime(timestamp) {
		if (!timestamp) return '';
		
		const date = new Date(timestamp * 1000);
		const now = new Date();
		const today = new Date(now.getFullYear(), now.getMonth(), now.getDate());
		const recordDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());

		if (recordDate.getTime() === today.getTime()) {
			// 今天
			return `今天 ${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}`;
		} else if (recordDate.getTime() === today.getTime() - 24 * 60 * 60 * 1000) {
			// 昨天
			return `昨天 ${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}`;
		} else {
			// 其他日期
			return `${date.getMonth() + 1}月${date.getDate()}日 ${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}`;
		}
	},

	/**
	 * 格式化金额显示
	 * @param {number} amount 金额（分）
	 * @returns {string} 格式化后的金额
	 */
	formatAmount(amount) {
		if (typeof amount !== 'number') return '0.00';
		return (amount / 100).toFixed(2);
	},

	/**
	 * 获取状态文本
	 * @param {string} status 状态
	 * @returns {string} 状态文本
	 */
	getStatusText(status) {
		const statusMap = {
			'待支付': 'pending',
			'支付成功': 'success',
			'支付失败': 'failed',
			'已取消': 'cancelled'
		};
		return Object.keys(statusMap).find(key => statusMap[key] === status) || '未知';
	},

	/**
	 * 生命周期函数--监听页面初次渲染完成
	 */
	onReady() {

	},

	/**
	 * 生命周期函数--监听页面显示
	 */
	onShow() {

	},

	/**
	 * 生命周期函数--监听页面隐藏
	 */
	onHide() {

	},

	/**
	 * 生命周期函数--监听页面卸载
	 */
	onUnload() {

	},

	/**
	 * 页面相关事件处理函数--监听用户下拉动作
	 */
	onPullDownRefresh() {
		this.loadRechargeRecords(true).finally(() => {
			wx.stopPullDownRefresh();
		});
	},

	/**
	 * 页面上拉触底事件的处理函数
	 */
	onReachBottom() {
		if (this.data.hasMore && !this.data.loading) {
			this.loadRechargeRecords();
		}
	},

	/**
	 * 用户点击右上角分享
	 */
	onShareAppMessage() {

	}
})